package com.tanhua.dubbo.server.service;

import com.tanhua.dubbo.server.enums.IdType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

/**
 *  获取id服务类
 */
@Service
public class IdService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 实现逻辑：借助于redis中的自增长特性，实现全局的id自增长
     *      由于我们的架构是SOA分布式架构，所以当服务发布多个的时候，
     *      单纯的定义变量自增作为自增id的话，无法实现全局的共享，但是redis可行
     * @param idType
     * @return
     */
    public Long createId(IdType idType) {
        String idKey = "TANHUA_ID_" + idType.toString();    //TANHUA_ID_PUBLISH
        return redisTemplate.opsForValue().increment(idKey);
    }

}